package org.csu.canteen.service.Impl;

import org.csu.canteen.entity.Cart;
import org.csu.canteen.entity.CartItem;
import org.csu.canteen.entity.Item;
import org.csu.canteen.persistence.CartItemMapper;
import org.csu.canteen.service.CartService;
import org.csu.canteen.vo.ItemVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.util.*;

@Service("cartService")
public class CartServiceImpl implements CartService {

    @Autowired
    private CartItemMapper cartItemMapper;
    private final Map<String, CartItem> itemMap = Collections.synchronizedMap(new HashMap<>());
    private final List<CartItem> itemList = new ArrayList<>();

    public boolean checkStock(int itemId, int quantity) {
        // 这里调用库存检查服务或者数据库查询逻辑
        return true; // 暂时返回true作为示例
    }

    public double getItemPrice(int itemId) {
        // 假设这里有价格查询逻辑，比如通过商品ID查询价格
        return 100.0; // 暂时返回固定价格作为示例
    }

    public Iterator<CartItem> getCartItems() {
        return itemList.iterator();
    }

    public List<CartItem> getCartItemList() {
        return itemList;
    }

    public int getNumberOfItems() {
        return itemList.size();
    }

    public Iterator<CartItem> getAllCartItems() {
        return itemList.iterator();
    }

    public boolean containsItemId(String itemId) {
        return itemMap.containsKey(itemId);
    }


    @Override
    public BigDecimal getSubTotal(Cart cart, Item item) {
        if (item == null || cart.getQuantity()== null) {
            return BigDecimal.ZERO;
        }
        BigDecimal listPrice = item.getListPrice();
        return listPrice.multiply(BigDecimal.valueOf(cart.getQuantity()));
    }

    // 根据 itemId 获取指定的 CartItem
    public CartItem getCartItemByItemId(String itemId) {
        // 遍历购物车中的所有 CartItem，找到对应的 itemId
        if (itemId == null || itemId.isEmpty()) {
            return null;
        }
        // 直接从 Map 中获取商品项
        return itemMap.get(itemId);
    }







}
